package com.example.demo.support;

import com.google.common.collect.Maps;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Map;

@EqualsAndHashCode(callSuper = true)
@Data
public class IMCreateGroupResponse extends IMBaseResponse {

    private static final Map<Integer, String> ERROR_CODE_MESSAGE = Maps.newHashMap();

    static {
        ERROR_CODE_MESSAGE.put(10002, "服务器内部错误，请重试");
        ERROR_CODE_MESSAGE.put(10003, "请求命令字非法");
        ERROR_CODE_MESSAGE.put(10004, "参数非法，请根据错误描述检查请求是否正确");
        ERROR_CODE_MESSAGE.put(10005, "请求包中导入的成员数量超过500，请减少MemberList参数中导入的成员数量");
        ERROR_CODE_MESSAGE.put(10006, "创建群数量超过限额，例如累计创建在线成员广播大群（BChatRoom）超过5个，或者每日净增群组数超过配置的限额。详情请参考 群组限制差异");
        ERROR_CODE_MESSAGE.put(10007, "操作权限不足，请根据错误信息检查请求参数。例如，指定的群组类型不允许拉人入群，但在请求包中填写了MemberList");
        ERROR_CODE_MESSAGE.put(10008, "请求非法，可能是请求中携带的签名信息验证不正确，请再次尝试或 提交工单 联系技术客服");
        ERROR_CODE_MESSAGE.put(10016, "App 后台通过第三方回调拒绝本次操作，请检查您的回调服务“创建群组之前回调”的返回值");
        ERROR_CODE_MESSAGE.put(10021, "群组 ID 已被其他人使用，请选择其他的群组 ID");
        ERROR_CODE_MESSAGE.put(10025, "该群组 ID 已经由您自己使用过，请您先解散该群组或者选择其他的群组 ID");
        ERROR_CODE_MESSAGE.put(10036, "创建的音视频聊天室数量超过限制，请先解散部分音视频聊天室或者参考 价格说明 购买升级");
        ERROR_CODE_MESSAGE.put(10037, "请求中指定了群主（Owner_Account），但该群主创建和加入的群组数量超过了限制。请该群主退出部分群组或者参考 价格说明 购买升级");
        ERROR_CODE_MESSAGE.put(10038, "请求包中导入的成员数量超过了限制，请减少MemberList参数中导入的成员数量或者参考 价格说明 购买升级");
        ERROR_CODE_MESSAGE.put(80001, "文本安全打击，请检查群名称、群公告和群简介等是否有敏感词汇");
    }

    /**
     * 创建成功之后的群 ID，由即时通信 IM 后台分配
     */
    private String GroupId;

    @Override
    public String transformErrorCode(Integer errorCode) {
        String message = super.transformErrorCode(errorCode);
        if (message != null) {
            return message;
        }
        return ERROR_CODE_MESSAGE.getOrDefault(errorCode, "未知错误");
    }
}
